package com.naiterui.ehp.bs.doctor.dao;

import com.naiterui.ehp.bp.domain.Patient;
import com.naiterui.ehp.bs.doctor.vo.PatientNameVO;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface IPatientDao  {

    Patient get(Long id);

    /**
     * <更新>
     *
     * @param patient void <返回值描述>
     *
     * @Throws 异常信息
     * @History 2015年11月3日 下午6:20:28 by Amber
     */
    void saveOrUpdate(Patient patient);

    /**
     * 更新患者信息
     * IPatientDao.update()
     *
     * @param patient
     *
     * @Author fangguanhong
     * @Date 2016-3-9
     * @since 1.0.0
     */
    void update(Patient patient);

    /**
     * <根据患者id列表查询所有患者信息>
     * <对于好评列表和粉丝列表，查询患者的时候，和患者当前状态无关>
     * @param ids
     * @return List<Patient> <返回值描述>
     * @Throws 异常信息
     * @History 2015年6月22日 下午4:39:04 by chenlin
     */
    List<Patient> findAllPatientByIds(List<Long> ids);


    /**
     * <根据医生id查询医生患者列表>
     * <详细描述>
     * @param doctorId
     * @return List<Long> <返回值描述>
     * @Throws 异常信息
     * @History 2015年6月23日 下午6:23:04 by chenlin
     */
    List<Long> findPatientListByDoctorId(Long doctorId);


    /**
     * 根据医生ID患者姓名模糊查询患者名
     * PatientDaoImpl.getPatientNameByDoctorId()
     * @Author guoyongxiang
     * @Date 2016年2月27日
     * @since 2.2.0
     * @param doctorId
     * @param name
     * @return
     */
    Map<Long, PatientNameVO> getPatientNameByDoctorId(Long doctorId, String name);

    /**
     * 获取患者map(id,实体)
     * IPatientDao.getPatientMap()

     * @Date 2016年3月29日
     * @since 2.2.1
     * @param patientIds
     * @return
     */
    Map<Long, Patient> getPatientMap(Set<Long> patientIds);

    /**
     * 根据医生Id查询患者列表
     * @Author YongYang
     * @Date 2017年3月2日
     * @since 1.0.0
     * @param doctorId
     * @return
     */
    List<Long> findPatientList(Long doctorId);

    /**
     * 批量查询患者id
     * IPatientDao.findPatientNameList()
     * @Author YongYang
     * @Date 2017年3月31日
     * @since 1.0.0
     * @param patientIds
     * @return
     */
    List<Long> findPatientIdList(String patientIds);

}
